/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hochschild.seguridad.local.service.implementation;


import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hochschild.seguridad.domain.OpcionAcciones;
import com.hochschild.seguridad.local.dao.OpcionesSioDao;
import com.hochschild.seguridad.local.domain.OpcionSIO;
import com.hochschild.seguridad.local.domain.Usuario;
import com.hochschild.seguridad.local.service.OpcionesSIOManager;

/**
 *
 * @author Edson
 */
@Service
public class SimpleOpcionesSIOManager implements OpcionesSIOManager {

	@Autowired
    private OpcionesSioDao opcionesSioDao;
	
	private Logger logger = Logger.getLogger(SimpleOpcionesSIOManager.class);

	
	public String cargaOpcionesMenu(List<OpcionAcciones> lst_opciones, Usuario beanUsr) {
        String strOpciones = concatenaOpcionesMenu(lst_opciones);
        List<OpcionSIO> lst_opcionesSIO = getOpciones(strOpciones);
        if(lst_opcionesSIO != null && lst_opcionesSIO.size() > 0) {
        	logger.debug("Cargando "+lst_opcionesSIO.size()+ "opciones al usuario");
            beanUsr.setLst_opciones(lst_opcionesSIO);
        }
        return strOpciones;
    }
	
	private String concatenaOpcionesMenu(List<OpcionAcciones> lst_opciones) {

        List<String> resultado = new ArrayList<String>();

        for( OpcionAcciones opcion : lst_opciones){
            resultado.add(String.valueOf(opcion.getIdOpcion()));
            resultado.add(opcion.getAcciones());
        }

        String strOpciones = "";
        String opcion = "";
        for (int i = 0; i < resultado.size(); i++) {
            if (i % 2 == 0) {
                opcion = resultado.get(i);
                strOpciones += opcion + ",";
            }
        }
        if (!strOpciones.equals(""))
            strOpciones = strOpciones.substring(0, strOpciones.length() - 1);
        return strOpciones;
    }
	

    public List<OpcionSIO> getOpciones(String opciones) {

        return opcionesSioDao.getOpciones(opciones);
    }

    public OpcionesSioDao getOpcionesSioDao() {
        return opcionesSioDao;
    }

    public void setOpcionesSioDao(OpcionesSioDao opcionesSioDao) {
        this.opcionesSioDao = opcionesSioDao;
    }



}
